#include <stdio.h>
#include <string.h>

// 函数声明
extern void find_max_str(char *str[], int n, char **result);

int main(int argc, char const **argv)
{
    // 准备一个二级数组
    char names[4][100];
    int i = 0;
    printf("Please input %d strings:\n", 4);
    for(i = 0; i < 4; i++) {
        fgets(names[i], 100, stdin);
        // 去除fgets读取的字符串最后的'\n'
        names[i][strlen(names[i])-1] = '\0';
    }
    // 指针变量初始化为NULL
    char *max_str = NULL; 
    // 准备调用参数
    char *str_array[4] = {names[0], names[1], 
                        names[2], names[3]};
    // 调用函数
    find_max_str(str_array, 4, &max_str);
    // 将最大的字符串打印出来
    printf("The max string is %s\n", max_str);
    return 0;
}

void find_max_str(char **str, int n, char **result)
{ // 参数str接收指针数组，二级指针result用于返回
    char *current_max_str = str[0];
    int i = 0;
    for (i = 1; i < n; i++)
    {
        if (strcmp(str[i], current_max_str) > 0)
            current_max_str = str[i];
    }
    // 向result指向的指针变量赋值
    *result = current_max_str;
}